home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1996 January / macformat-033.iso / mac / Demos / Voodoo Lounge / VLMOVIES / SHARED.Dxr / 01983_Node Parent.ls < prev    next >
Encoding:
Text File  |  1995-10-25  |  11.0 KB  |  319 lines

  1. property pMyNodeNumber, pNumberOfBGPanels, pMyMovieName, pRoomNavigationSpeed, pLeftBGSprite, pRightBGSprite, pFirstBGCastMember, pLeftBGCast, pRightBGCast, pBGPanelCounter, pRoomCircumference, pScreenObjectsList, pLocHOfScreenRelativeToAbsoluteLocH, pDirection, pAmbientObjectsList, pAmbientObjectsonStageList, pCurrentQTScreenObject, pListOfNavigationScreenObjects, pFirstVisitPerLevelFlagList, pRolloverSprite, pPlayTransitionVOFlag
  2. global gProximityNavTimer, gFakeActorList, gCursorSprite, gEyeCursorCast, gTongueCursorCast, gCurrentMovieScreenObjectsList, gNavLeftCursor, gNavRightCursor
  3.  
  4. on birth me, nodeNumber, numberOfBGPanels, movieName, playTransitionVOFlag
  5.   set pMyNodeNumber to nodeNumber
  6.   set pFirstBGCastMember to 16
  7.   set pNumberOfBGPanels to numberOfBGPanels
  8.   set pMyMovieName to movieName
  9.   set pPlayTransitionVOFlag to playTransitionVOFlag
  10.   set pRoomNavigationSpeed to 60
  11.   set pLeftBGSprite to 3
  12.   set pRightBGSprite to 4
  13.   set pLeftBGCast to pFirstBGCastMember
  14.   set pRightBGCast to pFirstBGCastMember + 1
  15.   set pBGPanelCounter to 1
  16.   set pRoomCircumference to pNumberOfBGPanels * 640
  17.   set pScreenObjectsList to []
  18.   set pDirection to #right
  19.   set pAmbientObjectsList to []
  20.   set pAmbientObjectsonStageList to []
  21.   set pListOfNavigationScreenObjects to []
  22.   set pLocHOfScreenRelativeToAbsoluteLocH to 0
  23.   set pCurrentQTScreenObject to 0
  24.   set pFirstVisitPerLevelFlagList to [0, 0, 0]
  25.   set pRolloverSprite to 0
  26.   return me
  27. end
  28.  
  29. on mNavigateToLocationInRoom me, direction, positionInpixels
  30.   if direction = #right then
  31.     repeat while (positionInpixels - mGetLocHOfScreenRelativeToAbsoluteLocH(me)) < 0
  32.       mRoomNavigate(me, #right)
  33.     end repeat
  34.     repeat while mGetLocHOfScreenRelativeToAbsoluteLocH(me) < positionInpixels
  35.       mRoomNavigate(me, #right)
  36.     end repeat
  37.   else
  38.     repeat while (mGetLocHOfScreenRelativeToAbsoluteLocH(me) - positionInpixels) < 0
  39.       mRoomNavigate(me, #left)
  40.     end repeat
  41.     repeat while mGetLocHOfScreenRelativeToAbsoluteLocH(me) > positionInpixels
  42.       mRoomNavigate(me, #left)
  43.     end repeat
  44.   end if
  45. end
  46.  
  47. on mRoomNavigate me, direction
  48.   if pNumberOfBGPanels < 2 then
  49.     exit
  50.   end if
  51.   set pDirection to direction
  52.   if pDirection = #right then
  53.     set the locH of sprite pLeftBGSprite to the locH of sprite pLeftBGSprite - pRoomNavigationSpeed
  54.     set the locH of sprite pRightBGSprite to the locH of sprite pRightBGSprite - pRoomNavigationSpeed
  55.     if the locH of sprite pRightBGSprite < 320 then
  56.       mSwitchBGCastMovingRight(me)
  57.     end if
  58.   else
  59.     set the locH of sprite pRightBGSprite to the locH of sprite pRightBGSprite + pRoomNavigationSpeed
  60.     set the locH of sprite pLeftBGSprite to the locH of sprite pLeftBGSprite + pRoomNavigationSpeed
  61.     if the locH of sprite pLeftBGSprite > 320 then
  62.       mSwitchBGCastMovingLeft(me)
  63.     end if
  64.   end if
  65.   mScreenObjectLocationUpdater(me)
  66.   updateStage()
  67. end
  68.  
  69. on mSwitchBGCastMovingRight me
  70.   if pBGPanelCounter = (pNumberOfBGPanels - 1) then
  71.     set pBGPanelCounter to pBGPanelCounter + 1
  72.     set the locH of sprite pLeftBGSprite to the locH of sprite pRightBGSprite
  73.     set the locH of sprite pRightBGSprite to the locH of sprite pRightBGSprite + 640
  74.     set the castNum of sprite pLeftBGSprite to pFirstBGCastMember + pNumberOfBGPanels - 1
  75.     set the castNum of sprite pRightBGSprite to pFirstBGCastMember
  76.   else
  77.     set pBGPanelCounter to pBGPanelCounter + 1
  78.     if pBGPanelCounter > pNumberOfBGPanels then
  79.       set pBGPanelCounter to 1
  80.     end if
  81.     set the locH of sprite pLeftBGSprite to the locH of sprite pRightBGSprite
  82.     set the locH of sprite pRightBGSprite to the locH of sprite pRightBGSprite + 640
  83.     set the castNum of sprite pLeftBGSprite to pFirstBGCastMember + pBGPanelCounter - 1
  84.     set the castNum of sprite pRightBGSprite to pFirstBGCastMember + pBGPanelCounter
  85.   end if
  86. end
  87.  
  88. on mSwitchBGCastMovingLeft me
  89.   if pBGPanelCounter = 1 then
  90.     set pBGPanelCounter to pNumberOfBGPanels
  91.     set the locH of sprite pRightBGSprite to the locH of sprite pLeftBGSprite
  92.     set the locH of sprite pLeftBGSprite to the locH of sprite pLeftBGSprite - 640
  93.     set the castNum of sprite pRightBGSprite to pFirstBGCastMember
  94.     set the castNum of sprite pLeftBGSprite to pFirstBGCastMember + pNumberOfBGPanels - 1
  95.   else
  96.     set pBGPanelCounter to pBGPanelCounter - 1
  97.     set the locH of sprite pRightBGSprite to the locH of sprite pLeftBGSprite
  98.     set the locH of sprite pLeftBGSprite to the locH of sprite pLeftBGSprite - 640
  99.     set the castNum of sprite pRightBGSprite to pFirstBGCastMember + pBGPanelCounter
  100.     set the castNum of sprite pLeftBGSprite to pFirstBGCastMember + pBGPanelCounter - 1
  101.   end if
  102. end
  103.  
  104. on mInitializeBGPanelPositions me
  105.   set pBGPanelCounter to 1
  106.   set pLocHOfScreenRelativeToAbsoluteLocH to 0
  107.   set the castNum of sprite pLeftBGSprite to pFirstBGCastMember + pBGPanelCounter - 1
  108.   if pBGPanelCounter = pNumberOfBGPanels then
  109.     set the castNum of sprite pRightBGSprite to pFirstBGCastMember
  110.   else
  111.     set the castNum of sprite pRightBGSprite to pFirstBGCastMember + pBGPanelCounter
  112.   end if
  113. end
  114.  
  115. on mPlaceScreenObjectsInRoom me
  116.   repeat with objectIndex = 1 to count(pScreenObjectsList)
  117.     mAssumeInitialRoomPosition(getAt(pScreenObjectsList, objectIndex))
  118.   end repeat
  119. end
  120.  
  121. on mRemoveObjectsFromRoom me
  122.   repeat with objectIndex = 1 to count(pScreenObjectsList)
  123.     mGetCastOffStage(getAt(pScreenObjectsList, objectIndex))
  124.   end repeat
  125. end
  126.  
  127. on mScreenObjectLocationUpdater me
  128.   if pDirection = #right then
  129.     set pLocHOfScreenRelativeToAbsoluteLocH to pLocHOfScreenRelativeToAbsoluteLocH + pRoomNavigationSpeed
  130.   else
  131.     set pLocHOfScreenRelativeToAbsoluteLocH to pLocHOfScreenRelativeToAbsoluteLocH - pRoomNavigationSpeed
  132.   end if
  133.   mCheckScreenRelativePositionForCompleteRotation(me)
  134.   repeat with screenObjectIndex = 1 to count(pScreenObjectsList)
  135.     set tempScreenObject to getAt(pScreenObjectsList, screenObjectIndex)
  136.     mUpdateScreenObjectPosition(tempScreenObject, pLocHOfScreenRelativeToAbsoluteLocH, pNumberOfBGPanels * 640)
  137.   end repeat
  138. end
  139.  
  140. on mCheckScreenRelativePositionForCompleteRotation me
  141.   if pLocHOfScreenRelativeToAbsoluteLocH >= (pNumberOfBGPanels * 640) then
  142.     set pLocHOfScreenRelativeToAbsoluteLocH to pLocHOfScreenRelativeToAbsoluteLocH - (pNumberOfBGPanels * 640)
  143.     exit
  144.   end if
  145.   if pLocHOfScreenRelativeToAbsoluteLocH < 0 then
  146.     set pLocHOfScreenRelativeToAbsoluteLocH to pLocHOfScreenRelativeToAbsoluteLocH + (pNumberOfBGPanels * 640)
  147.     exit
  148.   end if
  149. end
  150.  
  151. on mNodeStepFrameController me
  152.   checkEventListAndConditionalHandlers()
  153.   stepFrame(me)
  154.   repeat with index = 1 to count(gFakeActorList)
  155.     stepFrame(getAt(gFakeActorList, index))
  156.   end repeat
  157.   randomizeMusicLoops()
  158. end
  159.  
  160. on stepFrame me
  161.   mCheckForProximityRoomNavigation(me)
  162.   if (the mouseH > 20) and (the mouseH < 620) and (pRolloverSprite = 0) then
  163.     cursor([gTongueCursorCast, gTongueCursorCast + 1])
  164.   end if
  165.   if gProximityNavTimer > the ticks then
  166.     exit
  167.   end if
  168.   mControlAmbientScreenActivity(me)
  169. end
  170.  
  171. on mControlAmbientScreenActivity me
  172.   mUpdateListOfScreenObjectsOnStage(me)
  173.   repeat with ambientObjectIndex = 1 to count(pAmbientObjectsonStageList)
  174.     mCheckForAmbientAnimation(getAt(pAmbientObjectsonStageList, ambientObjectIndex))
  175.   end repeat
  176. end
  177.  
  178. on mUpdateListOfScreenObjectsOnStage me
  179.   set pAmbientObjectsonStageList to []
  180.   repeat with screenObjectIndex = 1 to count(pAmbientObjectsList)
  181.     set tempScreenObject to getAt(pAmbientObjectsList, screenObjectIndex)
  182.     set objectScreenPosition to the locH of sprite mGetSpriteNum(tempScreenObject)
  183.     if (objectScreenPosition > -200) and (objectScreenPosition < 840) then
  184.       add(pAmbientObjectsonStageList, tempScreenObject)
  185.     end if
  186.   end repeat
  187. end
  188.  
  189. on mCheckForProximityRoomNavigation me
  190.   set tempMouseH to the mouseH
  191.   if the mouseH < 20 then
  192.     if (pMyNodeNumber = 4) or (pMyNodeNumber = 5) or (pMyNodeNumber = 19) then
  193.       nothing()
  194.     else
  195.       cursor([gNavLeftCursor, gNavLeftCursor + 1])
  196.     end if
  197.     set gProximityNavTimer to the ticks + 30
  198.     mRoomNavigate(me, #left)
  199.     exit
  200.   end if
  201.   if the mouseH > 620 then
  202.     if (pMyNodeNumber = 4) or (pMyNodeNumber = 5) or (pMyNodeNumber = 19) then
  203.       nothing()
  204.     else
  205.       cursor([gNavRightCursor, gNavRightCursor + 1])
  206.     end if
  207.     set gProximityNavTimer to the ticks + 30
  208.     mRoomNavigate(me, #right)
  209.     exit
  210.   end if
  211. end
  212.  
  213. on mCheckForExitRollover me
  214.   if pRolloverSprite > 0 then
  215.     if rollOver(pRolloverSprite) then
  216.       set the locH of sprite gCursorSprite to the mouseH
  217.       set the locV of sprite gCursorSprite to the mouseV
  218.       exit
  219.     else
  220.       cursor([gTongueCursorCast, gTongueCursorCast + 1])
  221.       set the locV of sprite gCursorSprite to -10000
  222.       set pRolloverSprite to 0
  223.     end if
  224.   end if
  225.   repeat with index = 1 to count(pListOfNavigationScreenObjects)
  226.     set exitSprite to mGetSpriteNum(getAt(pListOfNavigationScreenObjects, index))
  227.     if rollOver(exitSprite) then
  228.       cursor(200)
  229.       set the locH of sprite gCursorSprite to the mouseH
  230.       set the locV of sprite gCursorSprite to the mouseV
  231.       set pRolloverSprite to exitSprite
  232.       exit repeat
  233.     end if
  234.   end repeat
  235. end
  236.  
  237. on mCreateNavigationObjectsList me
  238.   set pListOfNavigationScreenObjects to []
  239.   repeat with objectIndex = 1 to count(pScreenObjectsList)
  240.     if mGetScreenObjectType(getAt(pScreenObjectsList, objectIndex)) = #exit then
  241.       add(pListOfNavigationScreenObjects, getAt(pScreenObjectsList, objectIndex))
  242.     end if
  243.   end repeat
  244. end
  245.  
  246. on mUpdateTreasureListForVideoPlay me
  247.   global gLevelOneTreasureList, gLevelTwoTreasureList
  248.   if pMyMovieName = "06_VIDEO" then
  249.     set numberOfAlcoveVideosSeen to getaProp(gLevelOneTreasureList, #videoPlaysInAlcove1)
  250.     setaProp(gLevelOneTreasureList, #videoPlaysInAlcove1, numberOfAlcoveVideosSeen + 1)
  251.     exit
  252.   end if
  253.   if pMyMovieName = "18_BLURM" then
  254.     set numberOfBluesVideosSeen to getaProp(gLevelTwoTreasureList, #watchBluesVideos4)
  255.     setaProp(gLevelTwoTreasureList, #watchBluesVideos4, numberOfBluesVideosSeen + 1)
  256.     exit
  257.   end if
  258. end
  259.  
  260. on mSetScreenObjectList me, newObjectList
  261.   set pScreenObjectsList to newObjectList
  262. end
  263.  
  264. on mGetScreenObjectList me
  265.   Retturn(pScreenObjectsList)
  266. end
  267.  
  268. on mSetAmbientObjectsList me, newObjectList
  269.   set pAmbientObjectsList to newObjectList
  270. end
  271.  
  272. on mSetCurrentQTScreenObject me, objectNameOrZero
  273.   set pCurrentQTScreenObject to objectNameOrZero
  274. end
  275.  
  276. on mGetQTMovieScreenObject me
  277.   return pCurrentQTScreenObject
  278. end
  279.  
  280. on mGetLocHOfScreenRelativeToAbsoluteLocH me
  281.   return pLocHOfScreenRelativeToAbsoluteLocH
  282. end
  283.  
  284. on mGetNavigationObjectsList me
  285.   return pListOfNavigationScreenObjects
  286. end
  287.  
  288. on mSetFirstRoomVisitPerLevelFlag me, level
  289.   setAt(pFirstVisitPerLevelFlagList, level, 1)
  290. end
  291.  
  292. on mGetFirstRoomVisitPerLevelFlag me, level
  293.   return getAt(pFirstVisitPerLevelFlagList, level)
  294. end
  295.  
  296. on mGetNodeNumber me
  297.   return pMyNodeNumber
  298. end
  299.  
  300. on mGetRoomCircumference me
  301.   return pRoomCircumference
  302. end
  303.  
  304. on mSetFirstVisitPerLevelFlagList me, level, onOrOff
  305.   setAt(pFirstVisitPerLevelFlagList, level, onOrOff)
  306. end
  307.  
  308. on mGetFirstVisitPerLevelFlagList me, level
  309.   return getAt(pFirstVisitPerLevelFlagList, level)
  310. end
  311.  
  312. on mGetPlayTransitionVOFlag me
  313.   return pPlayTransitionVOFlag
  314. end
  315.  
  316. on mSetRoomNavigationSpeed me, newSpeed
  317.   set pRoomNavigationSpeed to newSpeed
  318. end
  319.